package cn.hinglo.gameclaw.admin.service;

import cn.hinglo.gameclaw.admin.dao.ClawImageDao;
import cn.hinglo.gameclaw.data.entity.Result;
import cn.hinglo.gameclaw.data.exception.ResultException;
import cn.hinglo.gameclaw.data.utils.CheckDataUtils;
import cn.hinglo.gameclaw.data.utils.FileImageUtils;
import cn.hinglo.gameclaw.data.utils.IdUtils;
import cn.hinglo.gameclaw.data.utils.ResultUtils;
import cn.hinglo.gameclaw.user.bean.ClawImage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;
import java.util.List;

import static cn.hinglo.gameclaw.data.utils.FieldUtils.IMAGE_2;

/**
 * @createTime: 2018/1/2
 * @author: HingLo
 * @description: 娃娃机的详情图管理、
 */
@Service
public class ClawImageService {


    private final ClawImageDao clawImageDao;

    @Autowired
    public ClawImageService(ClawImageDao clawImageDao) {
        this.clawImageDao = clawImageDao;
    }

    /**
     * 根据娃娃机的ID查下看详情图
     *
     * @param cid 娃娃机的编号
     * @return 娃娃机的详情图
     */
    public List<ClawImage> listClawImageService(int cid) {
        //检测娃娃机的编格式正确否
        if (checkClawIsExistence(cid)) {
            ClawImage menuClaw = new ClawImage().setCid(cid);
            return clawImageDao.select(menuClaw);
        }
        throw new RuntimeException("娃娃机的编号不正确");

    }


    /**
     * 根据详情图的唯一ID集合,使用的是‘,'分割开， 删除详情图
     *
     * @param id 详情图的集合
     * @return 删除结果
     */
    public Result deleteClawImageService(String id) {
        //检测娃娃机的编格式正确否
        if (CheckDataUtils.checkIdResultUtils(id)) {
            if (clawImageDao.deleteByPrimaryKey(id) > 0) {
                return ResultUtils.success();
            }
        }
        return ResultUtils.error("娃娃机的详情图编号不正确");
    }


    /**
     * 添加娃娃机的详情图
     *
     * @param clawImage 图片实体
     * @param header    图片
     * @return 添加结果
     */
    public Result addClawImageService(ClawImage clawImage, MultipartFile header) {
        if (checkClawIsExistence(clawImage.getCid())) {
            if (header.isEmpty()) {
                return ResultUtils.error("娃娃机的图片不能为空");
            } else {
                String fileName = FileImageUtils.createFileNameUtils(header);
                if (FileImageUtils.saveImageUtils(header, fileName, IMAGE_2)) {
                    clawImage.setId(IdUtils.getId());
                    clawImage.setImageUrl(fileName);
                    clawImage.setDate(new Date());
                    return clawImageDao.insert(clawImage) > 0 ? ResultUtils.success() : ResultUtils.error("添加失败");
                }
                return ResultUtils.error("文件上传成功，服务器处理失败");
            }
        }
        return ResultUtils.error("娃娃机的编号不正确");
    }


    /**
     * 检测娃娃机是否存在
     *
     * @param id 娃娃机的唯一编号
     * @return 是否存在
     */
    private boolean checkClawIsExistence(int id) {
        Integer temp = clawImageDao.findByIdClawIdDao(id);
        if (temp == id) {
            return true;
        }
        throw new ResultException(-1, "该娃娃机的编号不存在");
    }
}
